/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package BussinesLogic;

import DataAccess.Dao_Colaborador;
import DataAccess.Dao_Persona;
import DataModel.Colaborador;
import java.text.ParseException;
import java.util.*;


public class BL_Colaborador {

    private Dao_Colaborador dao_colaborador;

    public BL_Colaborador(){
        dao_colaborador = new Dao_Colaborador();
    }

    public Request autenticarColaborador(String username, String password) {

        Request rqst = dao_colaborador.consultarColaborador(username, 2);
        if (!rqst.getTransac()) return rqst;       

        Colaborador colaborador = (Colaborador) rqst.getObject();

        if(!(colaborador.getUsername().equals(username) && colaborador.getPassword().equals(password))){
            rqst.setTransac(false);
            rqst.setMessage("El nombre de usuario o contraseña son incorrectos");
        }
        
        return rqst;
    }
    
    public Request registrarColaborador(String id, String nombre, String apellido, String pais, Date fechaNac,
                                        String nacionalidades, String username, String pass, String cargo, String evento){
        
        Request rqst = new Request();
        String nac[] = nacionalidades.split(",");
        
        rqst = checkMayoriaEdad(fechaNac);
        if(!rqst.getTransac()) return rqst;
        
        java.text.SimpleDateFormat formato = new java.text.SimpleDateFormat("d-M-yyyy");        
        try {
            fechaNac = formato.parse(formato.format(fechaNac));
        } catch (ParseException ex) {
            rqst.setTransac(false);
            rqst.setMessage(ex.getMessage());
            return rqst;
        }

        Colaborador colaborador = new Colaborador();
        colaborador.setIdentificacion(id);
        colaborador.setNombre(nombre);
        colaborador.setApellido(apellido);
        colaborador.setLugarNac(pais);
        colaborador.setFechaNac(fechaNac);
        colaborador.setNacionalidad(nac);
        colaborador.setUsername(username);
        colaborador.setPassword(pass);
        colaborador.setCargo(cargo);
        colaborador.getEvento().setId(evento);
        
        Dao_Persona dao_persona = new Dao_Persona();
        rqst = dao_persona.registrarPersona(colaborador);
        if(!rqst.getTransac()) return rqst;
        
        for(int i=0;i<colaborador.getNacionalidad().length;i++){
            rqst = dao_persona.registrarNacionalidad(colaborador.getIdentificacion(),colaborador.getNacionalidad()[i]);
        }
        
        rqst = dao_colaborador.registrarColaborador(colaborador);
        if(!rqst.getTransac()){
            dao_persona.eliminarNacionalidad(colaborador);
            dao_persona.eliminarPersona(colaborador);
        }
        
        return rqst;   
    }
    
    public Request modificarColaborador(String id, String campo, String valor){
        
        Request rqst = new Request();
        
        rqst = dao_colaborador.modificarColaborador(id, campo, valor);
        return rqst;
        
    }
    
    public Request checkMayoriaEdad(Date fechaNac){
        
        Request rqst = new Request();
        
        Calendar calActual = Calendar.getInstance();        
        calActual.set(Calendar.YEAR,calActual.get(Calendar.YEAR)-18);
        
        Date d = calActual.getTime();
        if(d.compareTo(fechaNac)==1) rqst.setTransac(true);
        else{
            rqst.setTransac(false);
            rqst.setMessage("La persona colaborador no cumple con la edad requerida");
        }
        
        return rqst;
    }
    
}
